#ifndef NPQ_H
#define NPQ_H
#include <vector>
#include <list>
#include <assert.h>
class NodePriorityQueue
{
public:
	NodePriorityQueue(std::vector<double>& costs) : m_NodeCost(costs) {}
	~NodePriorityQueue(){}

	void Push(int node);
	void Pop();
	void Resort();

	unsigned int Size();

	bool Empty();

	int Front();

private:
	std::vector<double>& m_NodeCost;
	std::list<int> m_NodeIndices;

};
#endif